package org.base23.video.domain.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import org.base23.database.entity.DBModel;

/**
 * 用户分析结果实体
 */
@TableName("t_user_analysis_result")
public class UserAnalysisResult extends DBModel {

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 分析结果ID（外部分析服务返回的ID）
     */
    private String resultId;

    /**
     * 运动类型
     */
    private String sportType;

    /**
     * 视频文件名
     */
    private String videoFileName;

    /**
     * 分析状态：ANALYZING(分析中), COMPLETED(完成), FAILED(失败)
     */
    private String status;

    /**
     * 分析结果数据（JSON格式存储）
     */
    private String analysisData;

    /**
     * 分析总结
     */
    private String summary;

    /**
     * 错误信息（如果分析失败）
     */
    private String errorMessage;

    /**
     * 数据格式版本（v1.0=原始格式, v2.0=优化格式）
     */
    private String dataVersion;

    /**
     * 是否为优化存储格式
     */
    private Boolean isOptimized;

    /**
     * 数据大小（字节）
     */
    private Integer dataSizeBytes;

    /**
     * 原始数据大小（字节）
     */
    private Integer originalDataSizeBytes;

    /**
     * 压缩率（0.00-1.00）
     */
    private Double compressionRatio;

    /**
     * 数据类型：FULL_ANALYSIS(完整分析), OPTIMIZED_ANALYSIS(优化分析)
     */
    private String dataType;

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getResultId() {
        return resultId;
    }

    public void setResultId(String resultId) {
        this.resultId = resultId;
    }

    public String getSportType() {
        return sportType;
    }

    public void setSportType(String sportType) {
        this.sportType = sportType;
    }

    public String getVideoFileName() {
        return videoFileName;
    }

    public void setVideoFileName(String videoFileName) {
        this.videoFileName = videoFileName;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getAnalysisData() {
        return analysisData;
    }

    public void setAnalysisData(String analysisData) {
        this.analysisData = analysisData;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    public String getDataVersion() {
        return dataVersion;
    }

    public void setDataVersion(String dataVersion) {
        this.dataVersion = dataVersion;
    }

    public Boolean getIsOptimized() {
        return isOptimized;
    }

    public void setIsOptimized(Boolean isOptimized) {
        this.isOptimized = isOptimized;
    }

    public Integer getDataSizeBytes() {
        return dataSizeBytes;
    }

    public void setDataSizeBytes(Integer dataSizeBytes) {
        this.dataSizeBytes = dataSizeBytes;
    }

    public Integer getOriginalDataSizeBytes() {
        return originalDataSizeBytes;
    }

    public void setOriginalDataSizeBytes(Integer originalDataSizeBytes) {
        this.originalDataSizeBytes = originalDataSizeBytes;
    }

    public Double getCompressionRatio() {
        return compressionRatio;
    }

    public void setCompressionRatio(Double compressionRatio) {
        this.compressionRatio = compressionRatio;
    }

    public String getDataType() {
        return dataType;
    }

    public void setDataType(String dataType) {
        this.dataType = dataType;
    }
} 